﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIM.Geo.DA;
using SIM.Geo.BE;

namespace SIM.Geo.BL
{
    public class BLMaquina
    {
        /// <summary>
        /// Devuelve la lista de máquinas
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquina()
        {

            return Accesor.ListarMaquina();

        }
        /// <summary>
        /// Método para insertar una Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        /// <returns></returns>
        public int InsertarMaquina(Maquina maquina)
        {
            return Accesor.InsertarMaquina(maquina);
        }
        /// <summary>
        /// Método para modificar un Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void ModificarMaquina(Maquina maquina)
        {
            Accesor.ModificarMaquina(maquina);
        }
        /// <summary>
        /// Método para eliminar Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void EliminarMaquina(int codigoMaquina)
        {
            var maquina = Accesor.ObtenerMaquina(codigoMaquina);
            Accesor.EliminarMaquina(maquina);
        }
        /// <summary>
        /// Método para modificar un Maquina
        /// </summary>
        /// <param name="Maquina"></param>
        public void ModificarContadorHorometroMaquina(int codigoMaquina, double contadorHorometro)
        {
            Accesor.ModificarContadorHorometroMaquina(codigoMaquina, contadorHorometro);
        }
        /// <summary>
        /// Devuelve la lista de Maquinas por Empresa contratista
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquinaPorEmpresa(int codigoEmpresa)
        {
            return Accesor.ListarMaquinaPorEmpresa(codigoEmpresa);
        }
        /// <summary>
        /// Devuelve la lista de Maquinas por Empresa contratista
        /// </summary>
        /// <returns></returns>
        public List<Maquina> ListarMaquinaPorEmpresaPorEsDiamantino(int codigoEmpresa, int esDiamantino)
        {
            return Accesor.ListarMaquinaPorEmpresaPorEsDiamantino(codigoEmpresa, esDiamantino);
        }

        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem()
        {
            var result = Accesor.ListarMaquina();
            return result.Select(x => new ListItemInt { Value = x.CodigoMaquina, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();
        }

        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem1(int codigoEmpresa)
        {
            var result = Accesor.ListarMaquinaPorEmpresa(codigoEmpresa);
            return result.Select(x => new ListItemInt { Value = x.CodigoMaquina, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();
        }
        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem2(int codigoEmpresa, int esDiamantino)
        {
            var result = Accesor.ListarMaquinaPorEmpresaPorEsDiamantino(codigoEmpresa, esDiamantino);
            return result.Select(x => new ListItemInt { Value = x.CodigoMaquina, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();
        }
        /// <summary>
        /// Obtiene una maquina
        /// </summary>
        /// <param name="codigoSondaje"></param>
        /// <returns></returns>
        public Maquina ObtenerMaquina(int codigoMaquina)
        {
            return Accesor.ObtenerMaquina(codigoMaquina);
        }

        #region Accesor
        private static DAMaquina Accesor
        {
            [System.Diagnostics.DebuggerStepThrough]
            get { return new DAMaquina(); }
        }
        #endregion
    }
}
